package com.itheima.tlias.controller;

import com.itheima.tlias.common.result.Result;
import jakarta.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * Session控制类
 * 提供保存会话信息的接口
 */
@Slf4j
@RestController
@RequestMapping("/session")
public class TestSessionController {

    /**
     * 保存会话信息方法
     * 模拟将用户名和密码保存到会话中，通常用于登录等场景
     *
     * @param session HttpSession对象，用于操作会话
     * @return 操作结果，成功或失败
     */
    @GetMapping("/save")
    public Result saveSession(HttpSession session) {
        log.info("HttpSession-save: {}", session.hashCode());
        session.setAttribute("username", "admin");
        session.setAttribute("password", "123456");
        return Result.success();
    }

    /**
     * 使用HTTP GET方法处理/get路径的请求，用于获取会话信息
     * 该方法主要目的是从当前的HTTP会话中检索用户名和密码，并返回它们的组合字符串
     *
     * @param session 当前的HTTP会话对象，用于存储和检索会话相关的属性
     * @return 包含用户名和密码的Result对象，表示请求的处理结果
     */
    @GetMapping("/get")
    public Result getSession(HttpSession session) {
        // 记录HTTP会话对象的信息，以便于跟踪和调试
        log.info("HttpSession-get: {}", session.hashCode());
        // 从会话中获取存储的用户名和密码
        String username = (String) session.getAttribute("username");
        String password = (String) session.getAttribute("password");
        // 记录获取到的用户名和密码，以便于跟踪和调试
        log.info("username:{},password:{}", username, password);
        // 返回包含用户名和密码的结果对象
        return Result.success(username + ":" + password);
    }
}

